package dao

import (
	"context"
	"pay/internal/model"
)

func (d *Dao) FindByteDanceConfigsByPage(ctx context.Context, sgId, pStoreId, pageNo, pageSize uint32) (
	configs []*model.ByteDanceConfig, total int64, err error) {
	db := d.TransContext(ctx).Model(&model.ByteDanceConfig{}).Where(
		"sg_id = ? AND p_store_id = ? AND status = ?", sgId, pStoreId, true)
	if err = db.Count(&total).Error; err != nil {
		err = d.processSqlError(err)
		return
	}
	if err = db.Limit(int(pageSize)).Offset(int((pageNo - 1) * pageSize)).Scan(&configs).Error; err != nil {
		err = d.processSqlError(err)
		return
	}
	return
}

func (d *Dao) FindByteDanceConfigsByIds(ctx context.Context, ids []uint32, sgId uint32) (
	configs []*model.ByteDanceConfig, err error) {
	if err = d.TransContext(ctx).Model(&model.ByteDanceConfig{}).Where(
		"id in ? AND sg_id = ? AND status = ?",
		ids, sgId, true).Scan(&configs).Error; err != nil {
		err = d.processSqlError(err)
		return
	}
	return
}

func (d *Dao) GetByteDanceConfig(ctx context.Context, configId, sgId, pStoreId uint32) (
	config *model.ByteDanceConfig, err error) {
	config = &model.ByteDanceConfig{}
	if err = d.TransContext(ctx).Model(&model.ByteDanceConfig{}).Where(
		"id = ? AND sg_id = ? AND p_store_id = ? AND status = ?",
		configId, sgId, pStoreId, true).Take(config).Error; err != nil {
		err = d.processSqlError(err)
		return
	}
	return
}

func (d *Dao) GetByteDanceConfigById(ctx context.Context, configId, sgId uint32) (
	config *model.ByteDanceConfig, err error) {
	config = &model.ByteDanceConfig{}
	if err = d.TransContext(ctx).Model(&model.ByteDanceConfig{}).Where(
		"id = ? AND sg_id = ? AND status = ?",
		configId, sgId, true).Take(config).Error; err != nil {
		err = d.processSqlError(err)
		return
	}
	return
}
